﻿using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Net;
using System.Net.Mail;
using System.Text;
using System.Web;
using System.Web.Mvc;
using MusicHouse.Models;
using MusicHouse.Models.Views;
using MusicHouse.Util;

namespace MusicHouse.Controllers
{
    public class FaleConoscoController : Controller
    {
        //
        // GET: /FaleConosco/

        public ActionResult Index()
        {
            EnviarEmail ee = new EnviarEmail();
            ViewBag.Tipo = new SelectList(ee.Tipo.ListaTipos(), "Valor", "Texto");

            Usuario usu = AccountManager.RetornarUsuarioCookie() ?? Session["usuario"] as Usuario;

            if (usu != null)
            {
                ee.Email = usu.LoginEmail;
                ee.Nome = usu.Nome;
                ee.Telefone = ee.Telefone;
                ViewBag.Tipo = new SelectList(ee.Tipo.ListaTipos(), "Valor", "Texto");

            }

            return View(ee);
        }

        [HttpPost]
        public ActionResult Index(EnviarEmail enviarEmail)
        {
            #region Validação

#if !DEBUG
            if (!ReCaptcha.Validate(ConfigurationManager.AppSettings["ReCaptcha.PrivateKey"]))
            {
                ModelState.AddModelError("", "Código de segurança (ReCaptcha) Não confere.");
            }
#endif

            #endregion

            if (ModelState.IsValid)
            {
                string currentControllerName = (string)RouteData.Values["controller"];
                //string currentActionName = (string) RouteData.Values["action"];

                #region Enviar Email

                string remetenteEmail = ConfigurationManager.AppSettings["RemetenteEmail"]; //O e-mail do remetente

                string passwordEmail = ConfigurationManager.AppSettings["PasswordEmail"];
                SmtpClient client = new SmtpClient();
                client.Credentials = new NetworkCredential(remetenteEmail, passwordEmail);
                client.EnableSsl = false;  //Adicionando as credenciais do seu e-mail e senha:

                var mail = new MailMessage
                {
                    From = new MailAddress(remetenteEmail, "Casa Música", Encoding.UTF8),
                    Subject = string.Format("Fale Conosco - {1} - Contato de {0}", enviarEmail.Nome, enviarEmail.Tipo.Texto),
                    SubjectEncoding = Encoding.UTF8,
                    Body = string.Format(@"
Sr(a). {0}, <br /><br />
Obrigado por entrar em contato com o <a href='www.casamusica.com.br'>Casa Música</a><br /><br />
Entraremos em contatoo mais breve possível<br /><br />

Sua Mensagem: <br />
Assunto: {2} <br />
<pre>
{1}
</pre>
<br /><br /><br />
Cordialmente,<br /><br />
Casa Música
", enviarEmail.Nome, enviarEmail.Mensagem, enviarEmail.Tipo.Texto),
                    BodyEncoding = Encoding.UTF8,
                    IsBodyHtml = true,
                    Priority = MailPriority.Normal
                };

                mail.To.Add(enviarEmail.Email);
                string[] destinataios = ConfigurationManager.AppSettings["DestinatariosEmail"].Split(','); //O e-mails do destinatarios bcc
                foreach (var destinataio in destinataios)
                {
                    mail.Bcc.Add(destinataio);    
                }
                

                try
                {
                    client.Send(mail);
                }
                catch
                {
                    //  so reporta erro se nao for debug para funcionar no ambiente de desenvolvimento
#if !DEBUG
                        throw;
#endif
                    Console.WriteLine(mail.Body);
                }

                #endregion
            }

            ViewBag.Tipo = new SelectList(enviarEmail.Tipo.ListaTipos(), "Valor", "Texto", enviarEmail.ValorTipoEmail);

            ViewBag.MensagemConfirmacao = "Email enviado com sucesso. Obrigado pelo seu contato.";

            //return RedirectToAction("Index");
            return View(enviarEmail);
        }


    }
}
